package br.uvv.sao.managedBean;

import java.io.Serializable;

import org.primefaces.component.menu.Menu;

import br.uvv.sao.domain.Aluno;
import br.uvv.sao.domain.Professor;
import br.uvv.sao.domain.Usuario;
import br.uvv.sao.rn.LoginRN;
import br.uvv.sao.util.Util;

public class ContextoBean implements Serializable {

	private static final long serialVersionUID = 8762299524476341914L;
	
	public Integer dataTableRows = 5;
	private Boolean temPermissao = true;
	
	private Menu menu;
	
	public Menu getMenu() {
		LoginRN loginRN = new LoginRN();
		if (getAluno()){
			menu = loginRN.gerarMenuAluno();
		} else if (getProfessor()){
			menu = loginRN.gerarMenuProfessor();
		} else if (getAdministrador()){
			menu = loginRN.gerarMenuAdministrador();
		}
		return menu;
	}
	
	public Boolean getAluno() {
		try {
			Usuario usuario = Util.getUsuarioLogado();
			if(usuario != null && usuario.getId() != null && usuario.getId() > 0){
				if(usuario instanceof Aluno && !getAdministrador())
					return true;
			}
			return false;
		} catch (Exception e) {
			return false;
		}
	}
	
	public Boolean getProfessor() {
		try {
			Usuario usuario = Util.getUsuarioLogado();
			if(usuario != null && usuario.getId() != null && usuario.getId() > 0){
				if(usuario instanceof Professor && !getAdministrador())
					return true;
			}
			return false;
		} catch (Exception e) {
			return false;
		}
	}
	
	public Boolean getAdministrador() {
		try {
			Usuario usuario = Util.getUsuarioLogado();
			if(usuario != null && usuario.getId() != null && usuario.getId() > 0){
				if(usuario.getPerfil().getNome().equalsIgnoreCase("Administrador"))
					return true;
			}
			return false;
		} catch (Exception e) {
			return false;
		}
	}

	public Boolean getTemPermissao() {
		return temPermissao;
	}

	public void setTemPermissao(Boolean temPermissao) {
		this.temPermissao = temPermissao;
	}
	
	public Integer getDataTableRows() {
		return dataTableRows;
	}
	
	public void setDataTableRows(Integer dataTableRows) {
		this.dataTableRows = dataTableRows;
	}
}